<?php

class Admin_UserController extends Zend_Controller_Action
{	
    private $_params;
	private $_auth;
	private $_acl;
    public function init(){
        $this->_params      = $this->_request->getParams();
        
        $this->_acl         = new My_Acl();
        $this->view->acl    = $this->_acl;
        
        $this->_auth        = $this->_acl->checkAllowed();
        $this->view->auth   = $this->_auth;
    }
    public function indexAction(){
        $modelUser              = new Admin_Model_User();
        $userList               = $modelUser->getAllData()->toArray();
        $this->view->userList   = $userList;
    }
    public function addAction(){   
        $form = new Admin_Form_User();
        $form->removeElement('avatar');
        $form->submit->setLabel('Thêm mới');
        $this->view->form = $form;        
        if($this->getRequest()->isPost()){
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {                            
                $addData['username']    = $form->getValue('username');
                $addData['password']    = $form->getValue('password');
                $addData['email']       = $form->getValue('email');
                $addData['mobile']      = $form->getValue('mobile');
                $addData['fullname']    = $form->getValue('fullname');
                $addData['birth']       = $form->getValue('birth');
                $addData['role']        = $form->getValue('role');
                $addData['status']      = $form->getValue('status');                
                $addData['phone']       = $form->getValue('phone');            
                $addData['sex']         = $form->getValue('sex');
                $addData['address']     = $form->getValue('address');
                $addData['gold']        = $form->getValue('gold');
                
                if(strlen($addData['password']) < 6){                    
                    $this->view->mess = "Mật khẩu tối thiểu 6 ký tự !";
                    $this->view->flag = "alert";
                }else{
                    $modelUser = new Admin_Model_User();                
                    $userCheck = $modelUser->getDataCheckUnique(array('username'=>$addData['username'],
                        'email'=>$addData['email'],
                        'mobile'=>$addData['mobile'])
                    );                  
                    if(!$userCheck){
                        if($addData['birth']){
                            $addData['birth'] = strtotime($addData['birth']);
                        }                                                
                        $userId = $modelUser->addData($addData);
                        if($userId){
                            $this->_helper->redirector('index', 'user', 'admin');
                        }else{
                            $this->view->mess = "Đã có lỗi xảy ra. Vui lòng thử lại!";
                            $this->view->flag = "error";
                       }
                    }else{                                                
                        if($addData['username'] == $userCheck['username']){
                            $this->view->mess = "Email $addData[email] đã đăng ký tại hệ thống. Vui lòng dùng địa chỉ Email khác!";
                            $this->view->flag = "error";    
                        }elseif($addData['mobile'] == $userCheck['mobile']){
                            $this->view->mess = "Số điện thoại $addData[mobile] đã đăng ký tại hệ thống. Vui lòng dùng số điện thoại khác!";
                            $this->view->flag = "error";    
                        }elseif($addData['email'] == $userCheck['email']){
                            $this->view->mess = "Tên đăng nhập: $addData[username] đã tồn tại. Vui lòng chọn tên khác!";
                            $this->view->flag = "error";    
                        }                                        
                    } 
                }                               				
            }else{
                $form->populate($formData);
            }
        }                                       
    }
    public function editAction(){        
        $userId = (int)($this->_getParam('userId', 0));        
        $modelUser = new Admin_Model_User();        
        $userCheck = $modelUser->getDataByUserId($userId);
        $this->view->userCheck = $userCheck;        
        $form = new Admin_Form_User();
        $form->submit->setLabel('Lưu thay đổi');                   
        $this->view->form = $form;                                               
        if($userCheck){            
            if($this->getRequest()->isPost()){                
                $formData = $this->getRequest()->getPost();                                                                                                                                                              
                if($form->isValid($formData)){                    
                    $editData['userId']    = $form->getValue('userId');
                    $editData['username']    = $form->getValue('username');
                    $editData['email']    = $form->getValue('email');
                    $editData['mobile']    = $form->getValue('mobile');
                    $editData['password']      = $form->getValue('password');
                    $editData['fullname']      = $form->getValue('fullname');
                    $editData['birth']      = $form->getValue('birth');
                    $editData['sex']      = $form->getValue('sex');
                    $editData['phone']      = $form->getValue('phone');
                    $editData['address']      = $form->getValue('address');
                    $editData['role']      = $form->getValue('role');                                
                    $editData['status']      = $form->getValue('status');
                    $editData['gold']      = $form->getValue('gold');                        
                      
                    $userCheckEmail = $modelUser->getDataByEmail($editData['email']);
                    $userCheckMobile = $modelUser->getDataByMobile($editData['mobile']);
                    $userCheckUsername = $modelUser->getDataByUsername($editData['username']);                                        
                    $check = 1;                    
                    if($userCheckEmail && $userCheckEmail['userId'] != $editData['userId']){
                        $this->view->mess = "Email $editData[email] đã đăng ký tại hệ thống. Vui lòng dùng địa chỉ Email khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }                                                            
                    if($userCheckMobile && $userCheckMobile ['userId'] != $editData['userId']){
                        $this->view->mess = "Số điện thoại $editData[mobile] đã đăng ký tại hệ thống. Vui lòng dùng số điện thoại khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }
                    if($userCheckUsername && $userCheckUsername['userId'] != $editData['userId']){
                        $this->view->mess = "Tên đăng nhập: $editData[username] đã tồn tại. Vui lòng chọn tên khác!";
                        $this->view->flag = "error";
                        $check = 0;
                    }                    
                    if($check){                        
                        if($editData['password']){
    				        if(strlen($editData['password']) < 6){
    				            $this->view->mess = "Mật khẩu tối thiểu 6 ký tự !";
                                $this->view->flag = "alert";
                                $check = 0;
                            }
        				}                                                                       
                        if($check){                            
                            $upload = new Zend_File_Transfer();                            
                            $files = $upload->getFileInfo();                                                                                    
                            if($upload->getFileName(null,false)){
                                $upload->setDestination(PUBLIC_PATH.'/upload/usava/');                                                                     
                                $upload->addFilter('Rename', date("YmdHis-").$editData['userId'].".".My_Service_File::getExtension($upload->getFileName(null,false)) );                                                                                                    
                                $upload->receive();
                                unlink(PUBLIC_PATH.'/'.$userCheck['avatar']);                                                                                                                                    
                                if($upload->getFileName(null,false)){
                                    $editData['avatar'] = '/upload/usava/'.$upload->getFileName(null,false);
                                }else{
                                    $editData['avatar'] = "";
                                }
                            }else $editData['avatar'] = $userCheck['avatar'];                                                           
                            if($editData['birth']){
                                $editData['birth'] = strtotime($editData['birth']);
                            }
                            if($editData['password']){
                                $modelUser->updatePass($editData['userId'], $editData['password']);
                            }
                            $modelUser->updateData($editData['userId'],$editData);
                            $this->_helper->redirector('index', 'user', 'admin');                                                                                                                
                        }else{                            
                            $form->populate($formData); 
                        }                                                
                    }else{
                        $form->populate($formData);
                    }                                                                                                                                                                                                                                 				
                }else{                         
                    $form->populate($formData);
                }
            }else{                
                $form->populate($userCheck->toArray());                
            }
        }else{
            $this->_helper->redirector('index', 'user', 'admin');
        }
    }
    public function deleteAction(){
        if($this->getRequest()->isPost()){
            $del = $this->getRequest()->getPost('del');
            if($del == 'Có'){               
                $userId = $this->getRequest()->getPost('userId');
                $modelUser = new Admin_Model_User();                                                                                                
                $modelUser->deleteData($userId);                
                // ghi log
            }
            $this->_helper->redirector('index', 'user', 'admin');
        }else{
            $id = $this->_getParam('userId', 0);
            $modelUser = new Admin_Model_User();                        
            $this->view->userCheck = $modelUser->getDataByUserId($id);
        }
    }               
}